-
Notifications
You must be signed in to change notification settings - Fork 619
[Portal] Feature: Bridge page #7998
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
4 Skipped Deployments
|
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughAdds a new Bridge documentation section (layout, sidebar, multiple MDX pages exporting metadata), updates site navigation and homepage to include Bridge, updates Payments guide links to point at Bridge paths, updates Header API reference link, and introduces a PaymentsIcon component. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant User
participant Header
participant Router
participant BridgeLayout
participant BridgeContent
Note over Header,Router: Header exposes "Bridge" link and API reference updated
User->>Header: click "Bridge"
Header->>Router: navigate("/bridge")
Router->>BridgeLayout: load bridge layout (async)
BridgeLayout->>BridgeContent: render MDX children (page, FAQ, fees, providers)
BridgeContent-->>User: display Bridge docs and navigation (sidebar)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Warning Review ran into problems🔥 ProblemsErrors were encountered while retrieving linked issues. Errors (1)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 💡 Knowledge Base configuration:
You can enable these sources in your CodeRabbit configuration. 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
✨ Finishing Touches
🧪 Generate unit tests
Comment |
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7998 +/- ##
=======================================
Coverage 56.63% 56.64%
=======================================
Files 904 904
Lines 58677 58677
Branches 4161 4164 +3
=======================================
+ Hits 33231 33236 +5
+ Misses 25340 25335 -5
Partials 106 106
🚀 New features to boost your workflow:
|
| description: "Explore FAQs around bridging and swapping assets with thirdweb.", | ||
| }); | ||
|
|
||
| # Payments FAQs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The page title should be changed from Payments FAQs to Bridge FAQs to maintain consistency with both the section location (/bridge/faq/) and the metadata title defined in the frontmatter (Bridge FAQs | thirdweb documentation).
| # Payments FAQs | |
| # Bridge FAQs |
Spotted by Diamond
Is this helpful? React 👍 or 👎 to let us know.
| isCollapsible: false, | ||
| links: [ | ||
| { | ||
| href: `https://payments.thirdweb.com/reference`, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The URL should be updated to https://bridge.thirdweb.com/reference to correctly point to the Bridge API reference documentation. This ensures consistency with the new Bridge feature being introduced in this PR, rather than pointing to the Payments API.
| href: `https://payments.thirdweb.com/reference`, | |
| href: `https://bridge.thirdweb.com/reference`, |
Spotted by Diamond
Is this helpful? React 👍 or 👎 to let us know.
size-limit report 📦
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
apps/portal/src/app/page.tsx (2)
249-252: Hardening: add rel to external article linksPrevent reverse tabnabbing when external is true.
<Link className="before:absolute before:inset-0" href={props.href} - target={props.external ? "_blank" : undefined} + target={props.external ? "_blank" : undefined} + rel={props.external ? "noopener noreferrer" : undefined} >
273-279: Hardening: add rel to external SDK linksSame security fix as above.
<Link href={props.href} - target={props.href.includes("http") ? "_blank" : undefined} + target={props.href.includes("http") ? "_blank" : undefined} + rel={props.href.includes("http") ? "noopener noreferrer" : undefined} className="before:absolute before:inset-0" >
🧹 Nitpick comments (18)
apps/portal/src/icons/products/PaymentsIcon.tsx (1)
1-11: Add explicit return type and a reusable IconPropsKeep TS explicit and DRY across icons.
+type IconProps = { className?: string }; -export function PaymentsIcon({ className }: { className?: string }) { +export function PaymentsIcon({ className }: IconProps): JSX.Element { return ( <svg className={className} fill="none" height="24" + aria-hidden="true" role="presentation" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" >apps/portal/src/app/Header.tsx (3)
471-490: A11y: make Link the interactive child of DropdownMenuItemDropdownMenuItem asChild should wrap the focusable element directly.
-<DropdownMenuItem asChild key={info.name}> - <div - className={clsx( - "relative flex cursor-pointer gap-2 font-medium text-foreground", - "hover:bg-accent", - )} - > - {info.icon && <info.icon className="size-5 text-foreground" />} - <Link - className="before:absolute before:inset-0" - href={info.href} - prefetch={false} - target={info.href.startsWith("http") ? "_blank" : undefined} - rel={info.href.startsWith("http") ? "noopener noreferrer" : undefined} - > - {info.name} - </Link> - </div> -</DropdownMenuItem> +<DropdownMenuItem asChild key={info.name}> + <Link + className={clsx( + "relative flex cursor-pointer gap-2 font-medium text-foreground", + "hover:bg-accent before:absolute before:inset-0", + )} + href={info.href} + prefetch={false} + target={info.href.startsWith("http") ? "_blank" : undefined} + rel={info.href.startsWith("http") ? "noopener noreferrer" : undefined} + > + {info.icon && <info.icon className="size-5 text-foreground" />} + <span>{info.name}</span> + </Link> +</DropdownMenuItem>
129-150: Label consistency: “Payments & Bridge”apisLinks points “Payments” to bridge.thirdweb.com/reference. Match the homepage (“Payments & Bridge”) or split into two items.
- { - href: "https://bridge.thirdweb.com/reference", - name: "Payments", - }, + { + href: "https://bridge.thirdweb.com/reference", + name: "Payments & Bridge", + },
215-437: Add explicit return types to TSX componentsAdhere to repo TS guideline for explicit return types.
-export function Header() { +export function Header(): JSX.Element { @@ -function DropdownLinks(props: { +function DropdownLinks(props: { onLinkClick?: () => void; category: string; links: readonly { name: string; href: string; icon?: React.FC<{ className?: string }>; }[]; -}) { +}): JSX.Element { @@ -function NavLink(props: { +function NavLink(props: { href: string; name: string; onClick?: () => void; icon?: React.FC<{ className?: string }>; -}) { +}): JSX.Element {Also applies to: 439-524, 526-556
apps/portal/src/app/page.tsx (2)
129-131: Copy nit: “DotNet” → “.NET”Match header and common naming.
-<SDKCard href="/dotnet" icon={DotNetIcon} title="DotNet" /> +<SDKCard href="/dotnet" icon={DotNetIcon} title=".NET" />
30-33: Add explicit return types to page componentsKeep TSX consistent and explicit.
-export default function Page() { +export default function Page(): JSX.Element { @@ -function Hero() { +function Hero(): JSX.Element { @@ -function AISection() { +function AISection(): JSX.Element { @@ -function ReferenceSection() { +function ReferenceSection(): JSX.Element { @@ -function LearningResourcesSection() { +function LearningResourcesSection(): JSX.Element { @@ -function SectionTitle(props: { title: string; anchorId: string }) { +function SectionTitle(props: { title: string; anchorId: string }): JSX.Element { @@ -function ArticleCardIndex(props: { +function ArticleCardIndex(props: { title: string; description: string; href: string; icon: React.FC<{ className?: string }>; external?: boolean; -}) { +}): JSX.Element { @@ -function SDKCard(props: { +function SDKCard(props: { title: string; href: string; icon: React.FC<{ className?: string }>; -}) { +}): JSX.Element {Also applies to: 43-45, 80-83, 108-111, 170-174, 222-227, 233-241, 261-266
apps/portal/src/app/bridge/layout.tsx (1)
5-11: Drop unnecessary async and add explicit return type on LayoutNo awaits here. Align with our TS guidelines by removing async and declaring the return type.
-export default async function Layout(props: { children: React.ReactNode }) { +export default function Layout(props: { children: React.ReactNode }): JSX.Element {apps/portal/src/app/bridge/fees/page.mdx (2)
11-13: Tighten wording in Developer FeeMinor grammar/readability improvement.
-To monetize applications or games, you are able to set a developer fee on each crypto-to-crypto or swap transaction. You may set this percentage -through Project > Project Settings > Payments > Configure > Settings. +To monetize applications or games, you can set a developer fee on each crypto-to-crypto or swap transaction in +Project > Project Settings > Payments > Configure > Settings.
32-47: Format feePayer options for clarityPresenting these as code-formatted bullets reads better and avoids ambiguity.
-feePayer=buyer (Default) i.e. the user covers the protocol fee. - -Example: If the source token is 10 USDC, the user pays 10.30 USDC. - -- thirdweb receives: 0.30 USDC - -- Receiver receives: 10.00 USDC - -feePayer=receiver i.e. the receiver covers the protocol fee. - -Example: The user pays 10.00 USDC. - -- thirdweb receives: 0.30 USDC - -- Receiver receives: 9.70 USDC +- `feePayer: "buyer"` (default) — the user covers the protocol fee. + Example: If the source token is 10 USDC, the user pays 10.30 USDC. + - thirdweb receives: 0.30 USDC + - Receiver receives: 10.00 USDC + +- `feePayer: "receiver"` — the receiver covers the protocol fee. + Example: The user pays 10.00 USDC. + - thirdweb receives: 0.30 USDC + - Receiver receives: 9.70 USDCapps/portal/src/app/bridge/onramp-providers/page.mdx (2)
4-11: Align metadata with Bridge sectionUse Bridge naming and the same icon token used across Bridge pages for consistency.
- image: { - title: "thirdweb Payments - Onramp Providers", - icon: "thirdweb", - }, - title: "thirdweb Payments - Onramp Providers | thirdweb", + image: { + title: "thirdweb Bridge - Onramp Providers", + icon: "payments", + }, + title: "Bridge - Onramp Providers | thirdweb",
15-15: Match terminology with sectionUse “Bridge” (or “thirdweb Bridge”) instead of “Payments” here.
-**Onramp Providers** are services that allow users to buy crypto with fiat. Payments supports the following onramp providers: +**Onramp Providers** are services that allow users to buy crypto with fiat. Bridge supports the following onramp providers:apps/portal/src/app/bridge/faq/page.mdx (1)
130-130: Add missing question markMinor punctuation.
-<Details summary="How does KYC work with Buy With Fiat"> +<Details summary="How does KYC work with Buy With Fiat?">apps/portal/src/app/bridge/page.mdx (6)
1-15: Remove unused imports to cut bundle size and lint noise.
Callout,OpenSourceCard,Badge,OpenApiEndpoint, andEngineIconare imported but unused.-import { - Callout, - OpenSourceCard, - createMetadata, - InstallTabs, - SDKCard, - Grid, - ArticleIconCard, - Tabs, - TabsList, - TabsTrigger, - TabsContent, - Badge, - OpenApiEndpoint, -} from "@doc"; +import { + createMetadata, + InstallTabs, + SDKCard, + Grid, + ArticleIconCard, + Tabs, + TabsList, + TabsTrigger, + TabsContent, +} from "@doc"; import { ReactIcon, TypeScriptIcon, UnityIcon, DotNetIcon, UnrealEngineIcon, - EngineIcon } from "@/icons";Also applies to: 16-23
80-80: Quick grammar fixes.
- “lets” → “let’s”
- “checkout” → “check out”
- “Setup the Provider” → “Set up the Provider”
- To get started, lets generate a quote for 10 USDC on Optimism, paid with USDT on Arbitrum. + To get started, let's generate a quote for 10 USDC on Optimism, paid with USDT on Arbitrum.- You can execute the included transactions using the wallet of your choice. To learn how to send it using thirdweb Wallets, checkout the [Send a Payment](/payments/send) guide. + You can execute the included transactions using the wallet of your choice. To learn how to send it using thirdweb Wallets, check out the [Send a Payment](/payments/send) guide.- ### Setup the Provider + ### Set up the ProviderAlso applies to: 100-100, 141-145
83-83: Remove unused symbols in the TS example.
NATIVE_TOKEN_ADDRESSandtoWeiaren’t used in the snippet; avoid confusing readers.-import { Bridge, NATIVE_TOKEN_ADDRESS, toWei } from "thirdweb"; +import { Bridge } from "thirdweb";
92-93: Swap real-looking addresses for placeholders in docs.Use placeholders to avoid accidental reuse of live wallets.
- sender: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", - receiver: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", + sender: "0xYourAddressHere", + receiver: "0xYourAddressHere",
162-166: Import the client in the React example.The snippet uses
clientbut doesn’t show its import; add it for completeness.import { BuyWidget } from "thirdweb/react"; import { base } from "thirdweb/chains"; +import { client } from "./thirdwebClient"; function PaymentComponent() {
181-204: Fix SDK card links for React/React Native if available.Both “React” and “React Native” cards point to the TypeScript reference. Update to framework-specific references if they exist.
Would these be correct?
- React → /references/react/v5
- React Native → /references/react-native/v5
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (1)
apps/portal/src/app/bridge/fees/assets/fee-dash.pngis excluded by!**/*.png
📒 Files selected for processing (10)
apps/portal/src/app/Header.tsx(1 hunks)apps/portal/src/app/bridge/faq/page.mdx(1 hunks)apps/portal/src/app/bridge/fees/page.mdx(1 hunks)apps/portal/src/app/bridge/layout.tsx(1 hunks)apps/portal/src/app/bridge/onramp-providers/page.mdx(1 hunks)apps/portal/src/app/bridge/page.mdx(1 hunks)apps/portal/src/app/bridge/sidebar.tsx(1 hunks)apps/portal/src/app/page.tsx(4 hunks)apps/portal/src/app/payments/sidebar.tsx(0 hunks)apps/portal/src/icons/products/PaymentsIcon.tsx(1 hunks)
💤 Files with no reviewable changes (1)
- apps/portal/src/app/payments/sidebar.tsx
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,tsx}: Write idiomatic TypeScript with explicit function declarations and return types
Limit each file to one stateless, single-responsibility function for clarity
Re-use shared types from@/typesor localtypes.tsbarrels
Prefer type aliases over interface except for nominal shapes
Avoidanyandunknownunless unavoidable; narrow generics when possible
Choose composition over inheritance; leverage utility types (Partial,Pick, etc.)
Comment only ambiguous logic; avoid restating TypeScript in prose
**/*.{ts,tsx}: Use explicit function declarations and explicit return types in TypeScript
Limit each file to one stateless, single‑responsibility function
Re‑use shared types from@/typeswhere applicable
Prefertypealiases overinterfaceexcept for nominal shapes
Avoidanyandunknownunless unavoidable; narrow generics when possible
Prefer composition over inheritance; use utility types (Partial, Pick, etc.)
Lazy‑import optional features and avoid top‑level side‑effects to reduce bundle size
Files:
apps/portal/src/icons/products/PaymentsIcon.tsxapps/portal/src/app/bridge/sidebar.tsxapps/portal/src/app/bridge/layout.tsxapps/portal/src/app/page.tsxapps/portal/src/app/Header.tsx
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (CLAUDE.md)
Load heavy dependencies inside async paths to keep initial bundle lean (lazy loading)
Files:
apps/portal/src/icons/products/PaymentsIcon.tsxapps/portal/src/app/bridge/sidebar.tsxapps/portal/src/app/bridge/layout.tsxapps/portal/src/app/page.tsxapps/portal/src/app/Header.tsx
🧠 Learnings (7)
📚 Learning: 2025-07-18T19:20:32.530Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: .cursor/rules/dashboard.mdc:0-0
Timestamp: 2025-07-18T19:20:32.530Z
Learning: Applies to dashboard/**/*.{tsx,jsx} : Layouts should reuse `SidebarLayout` / `FullWidthSidebarLayout` (`@/components/blocks/SidebarLayout`).
Applied to files:
apps/portal/src/app/bridge/sidebar.tsxapps/portal/src/app/bridge/layout.tsx
📚 Learning: 2025-07-18T19:20:32.530Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: .cursor/rules/dashboard.mdc:0-0
Timestamp: 2025-07-18T19:20:32.530Z
Learning: Applies to dashboard/**/layout.tsx : Building layout shells (`layout.tsx`) and top-level pages that mainly assemble data.
Applied to files:
apps/portal/src/app/bridge/layout.tsx
📚 Learning: 2025-07-18T19:19:55.613Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-18T19:19:55.613Z
Learning: Applies to apps/{dashboard,playground-web}/**/*.{ts,tsx} : Use `NavLink` for internal navigation with automatic active states in dashboard and playground apps
Applied to files:
apps/portal/src/app/Header.tsx
📚 Learning: 2025-07-18T19:20:32.530Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: .cursor/rules/dashboard.mdc:0-0
Timestamp: 2025-07-18T19:20:32.530Z
Learning: Applies to dashboard/**/*.{tsx,jsx} : Use `NavLink` (`@/components/ui/NavLink`) for internal navigation so active states are handled automatically.
Applied to files:
apps/portal/src/app/Header.tsx
📚 Learning: 2025-08-29T15:37:38.513Z
Learnt from: CR
PR: thirdweb-dev/js#0
File: AGENTS.md:0-0
Timestamp: 2025-08-29T15:37:38.513Z
Learning: Applies to apps/{dashboard,playground}/**/*.{ts,tsx} : Use `NavLink` for internal navigation to get active state handling
Applied to files:
apps/portal/src/app/Header.tsx
📚 Learning: 2025-06-18T04:30:04.326Z
Learnt from: jnsdls
PR: thirdweb-dev/js#7365
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx:16-17
Timestamp: 2025-06-18T04:30:04.326Z
Learning: Next.js Link component fully supports both internal and external URLs and works appropriately with all standard anchor attributes including target="_blank", rel="noopener noreferrer", etc. Using Link for external URLs is completely appropriate and recommended.
Applied to files:
apps/portal/src/app/Header.tsx
📚 Learning: 2025-06-18T04:27:16.172Z
Learnt from: jnsdls
PR: thirdweb-dev/js#7365
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx:16-17
Timestamp: 2025-06-18T04:27:16.172Z
Learning: Next.js Link component supports external URLs without throwing errors. When used with absolute URLs (like https://...), it behaves like a regular anchor tag without client-side routing, but does not cause runtime crashes or errors as previously believed.
Applied to files:
apps/portal/src/app/Header.tsx
🧬 Code graph analysis (4)
apps/portal/src/app/bridge/sidebar.tsx (2)
apps/portal/src/app/payments/sidebar.tsx (1)
sidebar(8-104)apps/portal/src/components/Layouts/DocLayout.tsx (1)
SideBar(10-13)
apps/portal/src/app/bridge/layout.tsx (2)
apps/portal/src/components/Layouts/DocLayout.tsx (1)
DocLayout(25-76)apps/portal/src/app/bridge/sidebar.tsx (1)
sidebar(8-96)
apps/portal/src/app/page.tsx (1)
apps/portal/src/icons/products/PaymentsIcon.tsx (1)
PaymentsIcon(1-24)
apps/portal/src/app/Header.tsx (3)
packages/thirdweb/src/react/web/ui/components/text.tsx (1)
Link(44-62)apps/portal/src/components/others/DocSearch.tsx (1)
DocSearch(311-387)apps/portal/src/components/AI/chat-button.tsx (1)
ChatButton(13-80)
🪛 LanguageTool
apps/portal/src/app/bridge/fees/page.mdx
[grammar] ~1-~1: There might be a mistake here.
Context: import { DocImage } from "@doc"; import FeeShare from './assets/fee-dash....
(QB_NEW_EN)
[style] ~11-~11: As a shorter alternative for ‘able to’, consider using “can”.
Context: ... To monetize applications or games, you are able to set a developer fee on each crypto-to-c...
(BE_ABLE_TO)
[grammar] ~11-~11: There might be a mistake here.
Context: ...transaction. You may set this percentage through Project > Project Settings > Pay...
(QB_NEW_EN)
[grammar] ~55-~55: Ensure spelling is correct
Context: ...od used. There are no protocol fees on onramp transactions.
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~55-~55: There might be a mistake here.
Context: ...no protocol fees on onramp transactions.
(QB_NEW_EN)
apps/portal/src/app/bridge/page.mdx
[grammar] ~1-~1: There might be a mistake here.
Context: import { Callout, OpenSourceCard, createMetadat...
(QB_NEW_EN)
[grammar] ~2-~2: There might be a mistake here.
Context: import { Callout, OpenSourceCard, createMetadata, Instal...
(QB_NEW_EN)
[grammar] ~3-~3: There might be a mistake here.
Context: import { Callout, OpenSourceCard, createMetadata, InstallTabs, SDKCard, ...
(QB_NEW_EN)
[grammar] ~4-~4: There might be a mistake here.
Context: ...llout, OpenSourceCard, createMetadata, InstallTabs, SDKCard, Grid, ArticleIc...
(QB_NEW_EN)
[grammar] ~5-~5: There might be a mistake here.
Context: ...urceCard, createMetadata, InstallTabs, SDKCard, Grid, ArticleIconCard, Tabs,...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ... createMetadata, InstallTabs, SDKCard, Grid, ArticleIconCard, Tabs, TabsList...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...Metadata, InstallTabs, SDKCard, Grid, ArticleIconCard, Tabs, TabsList, Tabs...
(QB_NEW_EN)
[grammar] ~8-~8: There might be a mistake here.
Context: ...Tabs, SDKCard, Grid, ArticleIconCard, Tabs, TabsList, TabsTrigger, TabsCont...
(QB_NEW_EN)
[grammar] ~9-~9: There might be a mistake here.
Context: ...SDKCard, Grid, ArticleIconCard, Tabs, TabsList, TabsTrigger, TabsContent, B...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...rid, ArticleIconCard, Tabs, TabsList, TabsTrigger, TabsContent, Badge, Open...
(QB_NEW_EN)
[grammar] ~11-~11: There might be a mistake here.
Context: ...conCard, Tabs, TabsList, TabsTrigger, TabsContent, Badge, OpenApiEndpoint, }...
(QB_NEW_EN)
[grammar] ~12-~12: There might be a mistake here.
Context: ..., TabsList, TabsTrigger, TabsContent, Badge, OpenApiEndpoint, } from "@doc"; ...
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: ...ist, TabsTrigger, TabsContent, Badge, OpenApiEndpoint, } from "@doc"; import {...
(QB_NEW_EN)
[grammar] ~14-~14: There might be a mistake here.
Context: ... TabsContent, Badge, OpenApiEndpoint, } from "@doc"; import { ReactIcon, Typ...
(QB_NEW_EN)
[grammar] ~15-~15: There might be a mistake here.
Context: ... Badge, OpenApiEndpoint, } from "@doc"; import { ReactIcon, TypeScriptIcon, U...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...OpenApiEndpoint, } from "@doc"; import { ReactIcon, TypeScriptIcon, UnityIcon, ...
(QB_NEW_EN)
[grammar] ~17-~17: There might be a mistake here.
Context: ...int, } from "@doc"; import { ReactIcon, TypeScriptIcon, UnityIcon, DotNetIcon,...
(QB_NEW_EN)
[grammar] ~18-~18: There might be a mistake here.
Context: ..."; import { ReactIcon, TypeScriptIcon, UnityIcon, DotNetIcon, UnrealEngineIco...
(QB_NEW_EN)
[grammar] ~19-~19: There might be a mistake here.
Context: ... ReactIcon, TypeScriptIcon, UnityIcon, DotNetIcon, UnrealEngineIcon, EngineIc...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ...TypeScriptIcon, UnityIcon, DotNetIcon, UnrealEngineIcon, EngineIcon } from "@/...
(QB_NEW_EN)
[grammar] ~21-~21: There might be a mistake here.
Context: ...ityIcon, DotNetIcon, UnrealEngineIcon, EngineIcon } from "@/icons"; export con...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ...tNetIcon, UnrealEngineIcon, EngineIcon } from "@/icons"; export const metadata...
(QB_NEW_EN)
[grammar] ~25-~25: There might be a mistake here.
Context: ...export const metadata = createMetadata({ image: { title: "Get started with Brid...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ...st metadata = createMetadata({ image: { title: "Get started with Bridge", icon...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ...e: { title: "Get started with Bridge", icon: "payments" }, title: "Get starte...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: ...started with Bridge", icon: "payments" }, title: "Get started with Bridge", d...
(QB_NEW_EN)
[grammar] ~29-~29: There might be a mistake here.
Context: ...ted with Bridge", icon: "payments" }, title: "Get started with Bridge", descr...
(QB_NEW_EN)
[grammar] ~30-~30: There might be a mistake here.
Context: ..." }, title: "Get started with Bridge", description: "Bridge and swap tokens acr...
(QB_NEW_EN)
[grammar] ~31-~31: There might be a mistake here.
Context: ...ns across chains with thirdweb Bridge.", }); # Get Started thirdweb Bridge allo...
(QB_NEW_EN)
[grammar] ~86-~86: There might be a mistake here.
Context: ...eparedQuote = await Bridge.Buy.prepare({ originChainId: 42161, originTokenAddre...
(QB_NEW_EN)
[grammar] ~87-~87: There might be a mistake here.
Context: ...ge.Buy.prepare({ originChainId: 42161, originTokenAddress: "0xFd086bC7CD5C481DC...
(QB_NEW_EN)
[grammar] ~88-~88: There might be a mistake here.
Context: ...ebE478A1C0b69FCbb9", // USDT on Arbitrum destinationChainId: 10, destinationTok...
(QB_NEW_EN)
[grammar] ~89-~89: There might be a mistake here.
Context: ...DT on Arbitrum destinationChainId: 10, destinationTokenAddress: "0x0b2C639c5338...
(QB_NEW_EN)
[grammar] ~90-~90: There might be a mistake here.
Context: ...37CAf62653d097Ff85", // USDC on Optimism amount: 10_000_000n, // 10 USDC in wei (...
(QB_NEW_EN)
[grammar] ~91-~91: There might be a mistake here.
Context: ... // 10 USDC in wei (USDC has 6 decimals) sender: "0x2a4f24F935Eb178e3e7BA9B53A5Ee...
(QB_NEW_EN)
[grammar] ~92-~92: There might be a mistake here.
Context: ...4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", receiver: "0x2a4f24F935Eb178e3e7BA9B53A5...
(QB_NEW_EN)
[grammar] ~93-~93: There might be a mistake here.
Context: ...4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", client, }); ``` The prepared qu...
(QB_NEW_EN)
[grammar] ~94-~94: There might be a mistake here.
Context: ...178e3e7BA9B53A5Ee6d8407C0709", client, }); ``` The prepared quote will...
(QB_NEW_EN)
apps/portal/src/app/bridge/faq/page.mdx
[grammar] ~3-~3: There might be a mistake here.
Context: ...export const metadata = createMetadata({ image: { title: "Bridge FAQs", i...
(QB_NEW_EN)
[grammar] ~4-~4: There might be a mistake here.
Context: ...t metadata = createMetadata({ image: { title: "Bridge FAQs", icon: "payment...
(QB_NEW_EN)
[grammar] ~5-~5: There might be a mistake here.
Context: ...a({ image: { title: "Bridge FAQs", icon: "payments", }, title: "Bridge ...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ...le: "Bridge FAQs", icon: "payments", }, title: "Bridge FAQs | thirdweb docu...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...Bridge FAQs", icon: "payments", }, title: "Bridge FAQs | thirdweb documenta...
(QB_NEW_EN)
[grammar] ~8-~8: There might be a mistake here.
Context: ... "Bridge FAQs | thirdweb documentation", description: "Explore FAQs around bridgi...
(QB_NEW_EN)
[grammar] ~9-~9: There might be a mistake here.
Context: ...ing and swapping assets with thirdweb.", }); # Payments FAQs ### General <Deta...
(QB_NEW_EN)
[grammar] ~60-~60: There might be a mistake here.
Context: ...ntries are UNSUPPORTED: - Afghanistan - Africa (All Countries) - Belarus - Boliv...
(QB_NEW_EN)
[grammar] ~61-~61: There might be a mistake here.
Context: ... - Afghanistan - Africa (All Countries) - Belarus - Bolivia - China - Cuba - Colom...
(QB_NEW_EN)
[grammar] ~62-~62: There might be a mistake here.
Context: ...istan - Africa (All Countries) - Belarus - Bolivia - China - Cuba - Colombia - Hait...
(QB_NEW_EN)
[grammar] ~63-~63: There might be a mistake here.
Context: ...rica (All Countries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Hondur...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...l Countries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Ira...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...ries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Ira...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...arus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia ...
(QB_NEW_EN)
[grammar] ~67-~67: There might be a mistake here.
Context: ...olivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebano...
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ...ina - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar...
(QB_NEW_EN)
[grammar] ~69-~69: There might be a mistake here.
Context: ...uba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Paki...
(QB_NEW_EN)
[grammar] ~70-~70: There might be a mistake here.
Context: ...olombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - ...
(QB_NEW_EN)
[grammar] ~71-~71: There might be a mistake here.
Context: ... Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - R...
(QB_NEW_EN)
[grammar] ~72-~72: There might be a mistake here.
Context: ...onduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Uk...
(QB_NEW_EN)
[grammar] ~73-~73: There might be a mistake here.
Context: ...Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - Un...
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ... - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab E...
(QB_NEW_EN)
[grammar] ~75-~75: There might be a mistake here.
Context: ...a - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates ...
(QB_NEW_EN)
[grammar] ~76-~76: There might be a mistake here.
Context: ...on - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates - Venezue...
(QB_NEW_EN)
[grammar] ~77-~77: There might be a mistake here.
Context: ...ar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates - Venezuela - Yemen...
(QB_NEW_EN)
[grammar] ~78-~78: There might be a mistake here.
Context: ... Russia - Ukraine - United Arab Emirates - Venezuela - Yemen All United States are...
(QB_NEW_EN)
[grammar] ~79-~79: There might be a mistake here.
Context: ...raine - United Arab Emirates - Venezuela - Yemen All United States are supported, ...
(QB_NEW_EN)
[grammar] ~102-~102: There might be a mistake here.
Context: ... following tokens: - Mainnet (Ethereum) - Avalanche - Polygon We offer direct onr...
(QB_NEW_EN)
[grammar] ~103-~103: There might be a mistake here.
Context: ...okens: - Mainnet (Ethereum) - Avalanche - Polygon We offer direct onramping to th...
(QB_NEW_EN)
[grammar] ~108-~108: There might be a mistake here.
Context: ...kens in the US only: - ETH (Base)* - USDC (Ethereum) - USDC (Polygon)* - USD...
(QB_NEW_EN)
[grammar] ~109-~109: There might be a mistake here.
Context: ...nly**: - ETH (Base)* - USDC (Ethereum) - USDC (Polygon)* - USDC (Avalanche)* - ...
(QB_NEW_EN)
[grammar] ~110-~110: There might be a mistake here.
Context: ...)* - USDC (Ethereum) - USDC (Polygon)* - USDC (Avalanche)* - USDC (Base)* All ...
(QB_NEW_EN)
[grammar] ~111-~111: There might be a mistake here.
Context: ... - USDC (Polygon)* - USDC (Avalanche)* - USDC (Base)* All other tokens will req...
(QB_NEW_EN)
apps/portal/src/app/bridge/onramp-providers/page.mdx
[grammar] ~3-~3: There might be a mistake here.
Context: ...export const metadata = createMetadata({ image: { title: "thirdweb Payments - O...
(QB_NEW_EN)
[grammar] ~10-~10: Ensure spelling is correct
Context: ...: "Integrate onramp providers for any onchain transaction and set preferred providers...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~10-~10: There might be a mistake here.
Context: ...ransaction and set preferred providers", }); # Onramp Providers **Onramp Provid...
(QB_NEW_EN)
[grammar] ~17-~17: There might be a mistake here.
Context: ...ollowing onramp providers: - Coinbase - Transak - Stripe ## Provider Fees...
(QB_NEW_EN)
[grammar] ~18-~18: There might be a mistake here.
Context: ...p providers: - Coinbase - Transak - Stripe ## Provider Fees Each provide...
(QB_NEW_EN)
[grammar] ~25-~25: There might be a mistake here.
Context: ...rolled by thirdweb. | Provider | Fees | | -------- | ---- | | Coinbase | [Learn ...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ... | Provider | Fees | | -------- | ---- | | Coinbase | [Learn more about Coinbase ...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ...ing-and-funding/pricing-and-fees/fees) | | Transak | [Learn more about Transak ...
(QB_NEW_EN)
🪛 Gitleaks (8.27.2)
apps/portal/src/app/bridge/page.mdx
88-88: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
90-90: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
172-172: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Size
- GitHub Check: E2E Tests (pnpm, vite)
- GitHub Check: Analyze (javascript)
🔇 Additional comments (14)
apps/portal/src/app/Header.tsx (2)
481-487: Hardening: add rel to external Links in dropdown; avoid empty target=""Security + cleaner DOM.
-<Link - className="before:absolute before:inset-0" - href={info.href} - prefetch={false} - target={info.href.startsWith("http") ? "_blank" : ""} -> +<Link + className="before:absolute before:inset-0" + href={info.href} + prefetch={false} + target={info.href.startsWith("http") ? "_blank" : undefined} + rel={info.href.startsWith("http") ? "noopener noreferrer" : undefined} +>⛔ Skipped due to learnings
Learnt from: MananTank PR: thirdweb-dev/js#7984 File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/components/FeatureCard.client.tsx:93-99 Timestamp: 2025-09-05T19:45:22.949Z Learning: In the thirdweb dashboard project, rel="noopener noreferrer" attributes are not required for external links with target="_blank" in Link components, as confirmed by MananTank.Learnt from: MananTank PR: thirdweb-dev/js#7812 File: apps/dashboard/src/app/(app)/(dashboard)/published-contract/components/token-banner.tsx:48-60 Timestamp: 2025-08-07T20:43:21.864Z Learning: In the TokenBanner component at apps/dashboard/src/app/(app)/(dashboard)/published-contract/components/token-banner.tsx, the Link components use target="_blank" with internal application routes (starting with "/") to open pages in new tabs within the same application. These internal links do not require rel="noopener noreferrer" security attributes, which are only needed for external URLs.Learnt from: jnsdls PR: thirdweb-dev/js#7365 File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx:16-17 Timestamp: 2025-06-18T04:30:04.326Z Learning: Next.js Link component fully supports both internal and external URLs and works appropriately with all standard anchor attributes including target="_blank", rel="noopener noreferrer", etc. Using Link for external URLs is completely appropriate and recommended.Learnt from: jnsdls PR: thirdweb-dev/js#7365 File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx:16-17 Timestamp: 2025-06-18T04:27:16.172Z Learning: Next.js Link component supports external URLs without throwing errors. When used with absolute URLs (like https://...), it behaves like a regular anchor tag without client-side routing, but does not cause runtime crashes or errors as previously believed.
87-127: Align React & React Native SDK reference links
React and React Native items in your reference menus all point to “/references/typescript/v5”. Update them to the correct per-platform reference routes (e.g./references/react/v5or, if you’re using the shared TS reference with hooks anchors,/references/typescript/v5/hooks) in:
- apps/portal/src/app/Header.tsx (sdkLinks entries for React & React Native)
- apps/portal/src/app/page.tsx (SDKCard hrefs for React & React Native)
⛔ Skipped due to learnings
Learnt from: CR PR: thirdweb-dev/js#0 File: CLAUDE.md:0-0 Timestamp: 2025-07-18T19:19:55.613Z Learning: Applies to src/exports/react.native.ts : React Native specific exports are in `src/exports/react.native.ts`Learnt from: CR PR: thirdweb-dev/js#0 File: AGENTS.md:0-0 Timestamp: 2025-08-29T15:37:38.513Z Learning: Applies to apps/{dashboard,playground}/**/*.{ts,tsx} : Use `NavLink` for internal navigation to get active state handlingLearnt from: CR PR: thirdweb-dev/js#0 File: CLAUDE.md:0-0 Timestamp: 2025-07-18T19:19:55.613Z Learning: Applies to apps/{dashboard,playground-web}/**/*.{ts,tsx} : Use `NavLink` for internal navigation with automatic active states in dashboard and playground appsLearnt from: CR PR: thirdweb-dev/js#0 File: .cursor/rules/dashboard.mdc:0-0 Timestamp: 2025-07-18T19:20:32.530Z Learning: Applies to dashboard/**/*.{tsx,jsx} : Use `NavLink` (`@/components/ui/NavLink`) for internal navigation so active states are handled automatically.apps/portal/src/app/bridge/layout.tsx (1)
13-20: Confirm product icon for Bridge metadataThe metadata uses image.icon: "payments". If Bridge has a distinct icon token, consider switching for brand consistency; otherwise, keep "payments".
apps/portal/src/app/bridge/fees/page.mdx (2)
18-20: Double-check fee statements that can change“30 bps (0.30%)” and “no protocol fees on onramp transactions” may evolve. Please confirm against the latest pricing/policy before merge.
Also applies to: 55-55
1-2: Asset path verified The file exists at apps/portal/src/app/bridge/fees/assets/fee-dash.png and the import path './assets/fee-dash.png' is correct.apps/portal/src/app/bridge/onramp-providers/page.mdx (1)
17-20: Provider list is up to date Coinbase, Transak, and Stripe are currently supported onramps; no changes required.apps/portal/src/app/bridge/faq/page.mdx (1)
89-91: Payment support statement verified
Coinbase, Stripe, and Transak all support Apple Pay (Coinbase Onramp added it Dec 2, 2024; Stripe’s fiat-to-crypto onramp lists it; Transak since Mar 23, 2022) and Transak also supports Google Pay.apps/portal/src/app/bridge/sidebar.tsx (3)
48-51: Confirm REST API reference domainLink points to payments.thirdweb.com. If Bridge has its own reference (e.g., bridge.thirdweb.com/reference), update accordingly.
- href: `https://payments.thirdweb.com/reference`, + href: `https://bridge.thirdweb.com/reference`,
1-5: Imports look consistent with existing sidebarsMatches the pattern used in Payments’ sidebar; no action needed.
24-39: All linked guide pages verifiedThe guide pages for
/bridge/sell,/bridge/swap,/bridge/tokens, and/bridge/routesare present atapps/portal/src/app/bridge/{sell, swap, tokens, routes}/page.mdx. No missing pages.apps/portal/src/app/bridge/page.mdx (4)
146-156: Confirm if ThirdwebProvider needs configuration.If
ThirdwebProviderrequires props (e.g., supported chains, theme, locale) in v5, add them here; otherwise this minimal wrapper is fine. Ensure consistency with the rest of the docs.
86-96: Gitleaks false positives likely OK, but confirm no secrets.The flagged 0x… values are token and example addresses, not secrets. Please confirm no private keys, client secrets, or real PII are present.
Also applies to: 171-173
100-100: All doc and playground links verified. The routes/payments/send,/references/typescript/v5/widgets/BuyWidget, and the playground URL (https://playground.thirdweb.com/connect/pay/transactions) all exist and point to the intended content.
85-96: API surface verified: Bridge.Buy.prepare signature and option keys (originChainId,originTokenAddress,destinationChainId,destinationTokenAddress,amount,sender,receiver,client) align with the latest SDK; no changes required.
f50d7f9 to
ebe417a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
♻️ Duplicate comments (1)
apps/portal/src/app/bridge/faq/page.mdx (1)
12-12: Header now matches the page focus.Title corrected to “Bridge FAQs” — resolves earlier feedback.
🧹 Nitpick comments (4)
apps/portal/src/app/bridge/faq/page.mdx (4)
16-20: Avoid absolute guarantees in technical claims.Softer, accurate phrasing reduces support risk.
- health, price, and speed to guarantee the best path every time. + health, price, and speed to select the best available path for each transaction.
28-31: Capitalize product name and clarify fee responsibility.Aligns with style used elsewhere and reduces ambiguity.
- thirdweb does not charge any fees for buy with fiat. Any fees on onramping are based on the onramp provider. + thirdweb does not charge any fees for Buy With Fiat. Any onramp fees are set by the onramp provider and payment method.
93-97: Clarify whether limits are thirdweb-enforced vs provider-enforced.If provider-driven, prefer linking to provider docs or rendering dynamic limits.
130-132: Add missing question mark.Minor punctuation fix in the Details summary.
-<Details summary="How does KYC work with Buy With Fiat"> +<Details summary="How does KYC work with Buy With Fiat?">
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (3)
apps/portal/src/app/Header.tsx(2 hunks)apps/portal/src/app/bridge/faq/page.mdx(1 hunks)apps/portal/src/app/page.tsx(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- apps/portal/src/app/Header.tsx
- apps/portal/src/app/page.tsx
🧰 Additional context used
🪛 LanguageTool
apps/portal/src/app/bridge/faq/page.mdx
[grammar] ~3-~3: There might be a mistake here.
Context: ...export const metadata = createMetadata({ image: { title: "Bridge FAQs", i...
(QB_NEW_EN)
[grammar] ~4-~4: There might be a mistake here.
Context: ...t metadata = createMetadata({ image: { title: "Bridge FAQs", icon: "payment...
(QB_NEW_EN)
[grammar] ~5-~5: There might be a mistake here.
Context: ...a({ image: { title: "Bridge FAQs", icon: "payments", }, title: "Bridge ...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ...le: "Bridge FAQs", icon: "payments", }, title: "Bridge FAQs | thirdweb docu...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...Bridge FAQs", icon: "payments", }, title: "Bridge FAQs | thirdweb documenta...
(QB_NEW_EN)
[grammar] ~8-~8: There might be a mistake here.
Context: ... "Bridge FAQs | thirdweb documentation", description: "Explore FAQs around bridgi...
(QB_NEW_EN)
[grammar] ~9-~9: There might be a mistake here.
Context: ...ing and swapping assets with thirdweb.", }); # Bridge FAQs ### General <Detail...
(QB_NEW_EN)
[grammar] ~60-~60: There might be a mistake here.
Context: ...ntries are UNSUPPORTED: - Afghanistan - Africa (All Countries) - Belarus - Boliv...
(QB_NEW_EN)
[grammar] ~61-~61: There might be a mistake here.
Context: ... - Afghanistan - Africa (All Countries) - Belarus - Bolivia - China - Cuba - Colom...
(QB_NEW_EN)
[grammar] ~62-~62: There might be a mistake here.
Context: ...istan - Africa (All Countries) - Belarus - Bolivia - China - Cuba - Colombia - Hait...
(QB_NEW_EN)
[grammar] ~63-~63: There might be a mistake here.
Context: ...rica (All Countries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Hondur...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...l Countries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Ira...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...ries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Ira...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...arus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia ...
(QB_NEW_EN)
[grammar] ~67-~67: There might be a mistake here.
Context: ...olivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebano...
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ...ina - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar...
(QB_NEW_EN)
[grammar] ~69-~69: There might be a mistake here.
Context: ...uba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Paki...
(QB_NEW_EN)
[grammar] ~70-~70: There might be a mistake here.
Context: ...olombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - ...
(QB_NEW_EN)
[grammar] ~71-~71: There might be a mistake here.
Context: ... Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - R...
(QB_NEW_EN)
[grammar] ~72-~72: There might be a mistake here.
Context: ...onduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Uk...
(QB_NEW_EN)
[grammar] ~73-~73: There might be a mistake here.
Context: ...Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - Un...
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ... - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab E...
(QB_NEW_EN)
[grammar] ~75-~75: There might be a mistake here.
Context: ...a - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates ...
(QB_NEW_EN)
[grammar] ~76-~76: There might be a mistake here.
Context: ...on - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates - Venezue...
(QB_NEW_EN)
[grammar] ~77-~77: There might be a mistake here.
Context: ...ar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates - Venezuela - Yemen...
(QB_NEW_EN)
[grammar] ~78-~78: There might be a mistake here.
Context: ... Russia - Ukraine - United Arab Emirates - Venezuela - Yemen All United States are...
(QB_NEW_EN)
[grammar] ~79-~79: There might be a mistake here.
Context: ...raine - United Arab Emirates - Venezuela - Yemen All United States are supported, ...
(QB_NEW_EN)
[grammar] ~102-~102: There might be a mistake here.
Context: ... following tokens: - Mainnet (Ethereum) - Avalanche - Polygon We offer direct onr...
(QB_NEW_EN)
[grammar] ~103-~103: There might be a mistake here.
Context: ...okens: - Mainnet (Ethereum) - Avalanche - Polygon We offer direct onramping to th...
(QB_NEW_EN)
[grammar] ~108-~108: There might be a mistake here.
Context: ...kens in the US only: - ETH (Base)* - USDC (Ethereum) - USDC (Polygon)* - USD...
(QB_NEW_EN)
[grammar] ~109-~109: There might be a mistake here.
Context: ...nly**: - ETH (Base)* - USDC (Ethereum) - USDC (Polygon)* - USDC (Avalanche)* - ...
(QB_NEW_EN)
[grammar] ~110-~110: There might be a mistake here.
Context: ...)* - USDC (Ethereum) - USDC (Polygon)* - USDC (Avalanche)* - USDC (Base)* All ...
(QB_NEW_EN)
[grammar] ~111-~111: There might be a mistake here.
Context: ... - USDC (Polygon)* - USDC (Avalanche)* - USDC (Base)* All other tokens will req...
(QB_NEW_EN)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Unit Tests
- GitHub Check: Size
- GitHub Check: Lint Packages
- GitHub Check: Analyze (javascript)
🔇 Additional comments (3)
apps/portal/src/app/bridge/faq/page.mdx (3)
1-10: Metadata looks consistent and accurate.Title/description align with page content; icon usage appears intentional with Payments branding.
32-34: Confirmed protocol fee and dashboard path. Current protocol fee remains 0.30%, and additional developer/app fees are configured in the dashboard under Project → Payments → Settings.
125-128: Update Coinbase Onramp KYC language and add citation
Replace the hard-threshold claim with a softer, cited description:- Please note: onramping with Coinbase does not require KYC for a purchase below $500 with debit card. + Please note: Coinbase Onramp supports guest debit-card purchases up to $500 per week with lightweight KYC; additional verification is required for higher amounts (see Onramp Overview) cite1
| <Details summary="What does the term “network fees” refer to?"> | ||
| Network fees, also referred to as miner fees, are paid to the miner for processing crypto transactions and securing the respective network. These fees do not go to thirdweb. | ||
| </Details> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Miner vs validator terminology.
On PoS chains, fees go to validators. Recommend neutral phrasing.
- Network fees, also referred to as miner fees, are paid to the miner for processing crypto transactions and securing the respective network. These fees do not go to thirdweb.
+ Network (gas) fees are paid to validators/miners who process transactions and secure the network. These fees do not go to thirdweb.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <Details summary="What does the term “network fees” refer to?"> | |
| Network fees, also referred to as miner fees, are paid to the miner for processing crypto transactions and securing the respective network. These fees do not go to thirdweb. | |
| </Details> | |
| <Details summary="What does the term “network fees” refer to?"> | |
| Network (gas) fees are paid to validators/miners who process transactions and secure the network. These fees do not go to thirdweb. | |
| </Details> |
🤖 Prompt for AI Agents
In apps/portal/src/app/bridge/faq/page.mdx around lines 36 to 38, the current
text uses "miner fees" which is inaccurate for PoS chains; update the phrasing
to neutral terminology such as "network fees (paid to validators or miners
depending on the chain)" or "network validators/miners" so it covers both PoS
and PoW. Replace the sentence "Network fees, also referred to as miner fees, are
paid to the miner..." with a concise neutral alternative that clarifies fees are
paid to the network validators or miners and that these fees do not go to
thirdweb.
| <Details summary="What countries does Buy With Fiat support?"> | ||
| **Buy With Fiat** is available 160+ countries. The following countries are _UNSUPPORTED_: | ||
|
|
||
| - Afghanistan | ||
| - Africa (All Countries) | ||
| - Belarus | ||
| - Bolivia | ||
| - China | ||
| - Cuba | ||
| - Colombia | ||
| - Haiti | ||
| - Honduras | ||
| - Iran | ||
| - Iraq | ||
| - Latvia | ||
| - Lebanon | ||
| - Myanmar | ||
| - Pakistan | ||
| - Qatar | ||
| - Russia | ||
| - Ukraine | ||
| - United Arab Emirates | ||
| - Venezuela | ||
| - Yemen | ||
|
|
||
| All United States are supported, excluding Hawaii. | ||
| </Details> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Replace static country list and reconcile U.S. availability note.
Hard-coded coverage is error-prone and currently contradicts the NY/EU footnote. Link to provider coverage pages instead and remove the conflicting line.
<Details summary="What countries does Buy With Fiat support?">
-**Buy With Fiat** is available 160+ countries. The following countries are _UNSUPPORTED_:
-
-- Afghanistan
-- Africa (All Countries)
-- Belarus
-- Bolivia
-- China
-- Cuba
-- Colombia
-- Haiti
-- Honduras
-- Iran
-- Iraq
-- Latvia
-- Lebanon
-- Myanmar
-- Pakistan
-- Qatar
-- Russia
-- Ukraine
-- United Arab Emirates
-- Venezuela
-- Yemen
-
-All United States are supported, excluding Hawaii.
+Buy With Fiat availability varies by onramp provider and payment method. See the latest coverage:
+
+- Coinbase Onramp — Countries & currencies: https://docs.cloud.coinbase.com/onramp-%26-offramp/onramp-apis/countries-%26-currencies
+- Transak — Coverage: https://transak.com/coverage
+- Stripe Crypto Onramp — Geographic availability: https://docs.stripe.com/crypto/onramp
+
+In the U.S., coverage may vary by state (e.g., New York or Hawaii may be restricted). Always confirm availability in your jurisdiction.
</Details>
@@
-\* Not available in New York or the EU.Also applies to: 116-116
🧰 Tools
🪛 LanguageTool
[grammar] ~60-~60: There might be a mistake here.
Context: ...ntries are UNSUPPORTED: - Afghanistan - Africa (All Countries) - Belarus - Boliv...
(QB_NEW_EN)
[grammar] ~61-~61: There might be a mistake here.
Context: ... - Afghanistan - Africa (All Countries) - Belarus - Bolivia - China - Cuba - Colom...
(QB_NEW_EN)
[grammar] ~62-~62: There might be a mistake here.
Context: ...istan - Africa (All Countries) - Belarus - Bolivia - China - Cuba - Colombia - Hait...
(QB_NEW_EN)
[grammar] ~63-~63: There might be a mistake here.
Context: ...rica (All Countries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Hondur...
(QB_NEW_EN)
[grammar] ~64-~64: There might be a mistake here.
Context: ...l Countries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Ira...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...ries) - Belarus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Ira...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...arus - Bolivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia ...
(QB_NEW_EN)
[grammar] ~67-~67: There might be a mistake here.
Context: ...olivia - China - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebano...
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ...ina - Cuba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar...
(QB_NEW_EN)
[grammar] ~69-~69: There might be a mistake here.
Context: ...uba - Colombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Paki...
(QB_NEW_EN)
[grammar] ~70-~70: There might be a mistake here.
Context: ...olombia - Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - ...
(QB_NEW_EN)
[grammar] ~71-~71: There might be a mistake here.
Context: ... Haiti - Honduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - R...
(QB_NEW_EN)
[grammar] ~72-~72: There might be a mistake here.
Context: ...onduras - Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Uk...
(QB_NEW_EN)
[grammar] ~73-~73: There might be a mistake here.
Context: ...Iran - Iraq - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - Un...
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ... - Latvia - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab E...
(QB_NEW_EN)
[grammar] ~75-~75: There might be a mistake here.
Context: ...a - Lebanon - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates ...
(QB_NEW_EN)
[grammar] ~76-~76: There might be a mistake here.
Context: ...on - Myanmar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates - Venezue...
(QB_NEW_EN)
[grammar] ~77-~77: There might be a mistake here.
Context: ...ar - Pakistan - Qatar - Russia - Ukraine - United Arab Emirates - Venezuela - Yemen...
(QB_NEW_EN)
[grammar] ~78-~78: There might be a mistake here.
Context: ... Russia - Ukraine - United Arab Emirates - Venezuela - Yemen All United States are...
(QB_NEW_EN)
[grammar] ~79-~79: There might be a mistake here.
Context: ...raine - United Arab Emirates - Venezuela - Yemen All United States are supported, ...
(QB_NEW_EN)
🤖 Prompt for AI Agents
In apps/portal/src/app/bridge/faq/page.mdx around lines 57 to 83 (and also at
line 116), remove the hard-coded unsupported-country list and the contradictory
"All United States are supported, excluding Hawaii." line; instead add a short
sentence pointing users to the official provider coverage pages (include links
to the provider(s) used for Buy With Fiat) and a note to check provider pages
for up-to-date region/US-state availability; ensure any duplicate static list at
line 116 is replaced the same way and remove conflicting NY/EU footnote
discrepancies.
| <Details summary="Does thirdweb offer direct onramping to tokens through Buy With Fiat?"> | ||
| We offer direct onramping **internationally** to the following tokens: | ||
|
|
||
| - Mainnet (Ethereum) | ||
| - Avalanche | ||
| - Polygon | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
These are networks, not tokens.
Adjust wording for accuracy.
-<Details summary="Does thirdweb offer direct onramping to tokens through Buy With Fiat?">
-We offer direct onramping **internationally** to the following tokens:
+<Details summary="Does thirdweb offer direct onramping to tokens through Buy With Fiat?">
+We offer direct onramping **internationally** to the following networks:
- Mainnet (Ethereum)
- Avalanche
- Polygon📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <Details summary="Does thirdweb offer direct onramping to tokens through Buy With Fiat?"> | |
| We offer direct onramping **internationally** to the following tokens: | |
| - Mainnet (Ethereum) | |
| - Avalanche | |
| - Polygon | |
| <Details summary="Does thirdweb offer direct onramping to tokens through Buy With Fiat?"> | |
| We offer direct onramping **internationally** to the following networks: | |
| - Mainnet (Ethereum) | |
| - Avalanche | |
| - Polygon |
🧰 Tools
🪛 LanguageTool
[grammar] ~102-~102: There might be a mistake here.
Context: ... following tokens: - Mainnet (Ethereum) - Avalanche - Polygon We offer direct onr...
(QB_NEW_EN)
[grammar] ~103-~103: There might be a mistake here.
Context: ...okens: - Mainnet (Ethereum) - Avalanche - Polygon We offer direct onramping to th...
(QB_NEW_EN)
🤖 Prompt for AI Agents
In apps/portal/src/app/bridge/faq/page.mdx around lines 99 to 105, the copy
incorrectly calls Mainnet (Ethereum), Avalanche, and Polygon "tokens" — they are
networks; update the wording to say "networks" (e.g., change the sentence to "We
offer direct onramping internationally to the following networks:"), and make
any matching adjustments to the Details summary or surrounding copy so the
terminology is consistent and accurate.
| We offer direct onramping to the following tokens in the **US only**: | ||
|
|
||
| - ETH (Base)\* | ||
| - USDC (Ethereum) | ||
| - USDC (Polygon)\* | ||
| - USDC (Avalanche)\* | ||
| - USDC (Base)\* | ||
|
|
||
| All other tokens will require an additional Buy With Crypto step. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
State-based restrictions should be generalized and placed here (remove separate footnote).
Consolidate availability caveats near the list.
We offer direct onramping to the following tokens in the **US only**:
- ETH (Base)\*
- USDC (Ethereum)
- USDC (Polygon)\*
- USDC (Avalanche)\*
- USDC (Base)\*
-All other tokens will require an additional Buy With Crypto step.
+Availability varies by provider and state; some states may restrict specific tokens.
+
+All other tokens will require an additional Buy With Crypto step.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| We offer direct onramping to the following tokens in the **US only**: | |
| - ETH (Base)\* | |
| - USDC (Ethereum) | |
| - USDC (Polygon)\* | |
| - USDC (Avalanche)\* | |
| - USDC (Base)\* | |
| All other tokens will require an additional Buy With Crypto step. | |
| We offer direct onramping to the following tokens in the **US only**: | |
| - ETH (Base)\* | |
| - USDC (Ethereum) | |
| - USDC (Polygon)\* | |
| - USDC (Avalanche)\* | |
| - USDC (Base)\* | |
| Availability varies by provider and state; some states may restrict specific tokens. | |
| All other tokens will require an additional Buy With Crypto step. |
🧰 Tools
🪛 LanguageTool
[grammar] ~108-~108: There might be a mistake here.
Context: ...kens in the US only: - ETH (Base)* - USDC (Ethereum) - USDC (Polygon)* - USD...
(QB_NEW_EN)
[grammar] ~109-~109: There might be a mistake here.
Context: ...nly**: - ETH (Base)* - USDC (Ethereum) - USDC (Polygon)* - USDC (Avalanche)* - ...
(QB_NEW_EN)
[grammar] ~110-~110: There might be a mistake here.
Context: ...)* - USDC (Ethereum) - USDC (Polygon)* - USDC (Avalanche)* - USDC (Base)* All ...
(QB_NEW_EN)
[grammar] ~111-~111: There might be a mistake here.
Context: ... - USDC (Polygon)* - USDC (Avalanche)* - USDC (Base)* All other tokens will req...
(QB_NEW_EN)
🤖 Prompt for AI Agents
In apps/portal/src/app/bridge/faq/page.mdx around lines 106 to 114, the
state-based restriction currently referenced as a separate footnote should be
generalized and merged into the availability text near the token list; remove
the separate footnote marker, add a short parenthetical or sentence directly
after the heading or list that states a generalized restriction (e.g.,
"Availability limited by state and may vary; US only where specified"), and
consolidate any other caveats (network-specific or additional Buy With Crypto
step) into one succinct block adjacent to the list so all availability
information is centered in the same place.
PR-Codex overview
This PR focuses on enhancing the
thirdwebBridge and Payments documentation, introducing new features, links, and metadata, as well as improving the user interface for better navigation and user experience.Detailed summary
PaymentsIconcomponent.Bridgenavigation.connectLinksto include a newBridgeentry.hrefforHTTP APIto an external reference.Bridge FAQsandOnramp Providers.page.mdxfiles forPayments,Bridge, andFAQsections with new content and structure.Layoutcomponent for better page structure inbridge/layout.tsx.Summary by CodeRabbit
New Features
Documentation
UI
Icons